﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
using Interfaces;


namespace Model
{
    [DataContract] // 3. semester-sjov
    public class Registrering : IRegistrering
    {
        //Variabler
        [DataMember] // 3. semester-sjov
        int _id;
        [DataMember] // 3. semester-sjov
        DateTime _dato;
        [DataMember] // 3. semester-sjov
        DateTime _startTid;
        [DataMember] // 3. semester-sjov
        DateTime _slutTid;
        [DataMember] // 3. semester-sjov
        string _kommentar;
        [DataMember] // 3. semester-sjov
        bool _godkendt;
        [DataMember] // 3. semester-sjov
        IMedarbejder _medarbejder;
        [DataMember] // 3. semester-sjov
        IProjekt _projekt;

        //Properties
        [DataMember] // 3. semester-sjov
        public int Id
        {
            get { return _id; }
            private set { _id = value; }
        }
        [DataMember] // 3. semester-sjov
        public IMedarbejder Medarbejder
        {
            get { return _medarbejder; }
            private set { _medarbejder = value; }
        }
        [DataMember] // 3. semester-sjov
        public IProjekt Projekt
        {
            get { return _projekt; }
            private set { _projekt = value; }
        }
        [DataMember] // 3. semester-sjov
        public DateTime Dato
        {
            get { return _dato; }
            private set { _dato = value; }
        }
        [DataMember] // 3. semester-sjov
        public DateTime StartTid
        {
            get { return _startTid; }
            private set { _startTid = value; }
        }
        [DataMember] // 3. semester-sjov
        public DateTime SlutTid
        {
            get { return _slutTid; }
            private set { _slutTid = value; }
        }
        [DataMember] // 3. semester-sjov
        public string Kommentar
        {
            get { return _kommentar; }
            private set { _kommentar = value; }
        }
        [DataMember] // 3. semester-sjov
        public bool Godkendt
        {
            get { return _godkendt; }
            private set { _godkendt = value; }
        }

        //Constructor
        public Registrering(int id, DateTime dato, DateTime startTid, DateTime slutTid, string kommentar, Medarbejder medarbejder, Projekt projekt)
        {
            this._id = id;
            this._dato = dato;
            this._startTid = startTid;
            this._slutTid = slutTid;
            this._kommentar = kommentar;
            this._godkendt = false;
            this._medarbejder = medarbejder;
            this._projekt = projekt;
        }

        public Registrering()
        {
            this._id = -1;
            this._kommentar = "";
            this._godkendt = false;
            this._medarbejder = null;
            this._projekt = null;
        }

        public TimeSpan RetunerTimer()
        {
            TimeSpan diffResult = _slutTid.Subtract(_startTid);
            return diffResult;
        }

        public void RedigerRegistrering(int id, DateTime dato, DateTime startTid, DateTime slutTid, string kommentar, bool godkendt, Medarbejder medarbejder, Projekt projekt)
        {
            this._id = id;
            this._dato = dato;
            this._startTid = startTid;
            this._slutTid = slutTid;
            this._kommentar = kommentar;
            this._godkendt = godkendt;
            this._medarbejder = medarbejder;
            this._projekt = projekt;
        }
    }
}
